package gov.nhso.prov.acc.utils;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

public class PropUtil {
	public final Map<String, String> areaLevel() {
		 Map<String, String> data = new HashMap<String, String>();
		 data.put("1", "ส่วนกลาง");
		 data.put("2", "เขต");
		 data.put("3", "จังหวัด");
		 return this.sortedData(data);
	}
	
	public final Map<String, String> accType() {
		 Map<String, String> data = new HashMap<String, String>();
		 data.put("6", "บัญชี 6");
		 data.put("7", "บัญชี 7");
		 return this.sortedData(data);
	}

	public final Map<String, String> statusExpense() {
		 HashMap<String, String> data = new LinkedHashMap<String, String>();
		 data.put("P", "เตรียมรายการ");
		 data.put("A", "รออนุมัติ");
		 data.put("W", "รอดำเนินการ");
		 data.put("Y", "สำเร็จ");
		 data.put("S", "สำเร็จบางส่วน");
		 data.put("N", "ไม่สำเร็จ");
		 return data;
	}
	public final Map<String, String> reasonCode() {
		 Map<String, String> data = new LinkedHashMap<String, String>();
		 data.put("00", "SUCCESS");
		 data.put("03", "Not Arranged for (Unauthorized)");
		 data.put("04", "Account Closed");
		 data.put("22", "No Account Found");
		 data.put("26", "Drawer Deceased");
		 data.put("27", "Account Frozen");
		 data.put("51", "Incorrect Account");
		 data.put("52", "Agreement Cancelled (Authorization Cancelled)");
		 data.put("53", "Unable to Process");
		 data.put("57", "Unable to match Return to orignal In-Clearing transaction");
		 data.put("61", "User Deleted");
		 data.put("70", "Product Code,Company Code,Bank Code,or Service Type is Incorrect");
		 data.put("71", "Invalid amount,exceeded limit");
		 data.put("72", "Invalid number of transaction ,exceeed limit");
		 data.put("73", "Duplicate Batch/Duplicate Return (Actual error message will indicate batch or entry)");
		 data.put("74", "Receiving Bank not registered for Product Code");
		 data.put("75", "Invalid File Type in the Detail Record");
		 data.put("76", "Return reason on transaction was not found in the Return Reason Table");
		 data.put("79", "Unable to Process");
		 data.put("99", "ธกส.ไม่ได้ส่งดำเนินการ");
		 return data;
	}
	public final Map<String, String> negativeAllocate() {
		 Map<String, String> data = new HashMap<String, String>();
		 data.put("0", "ไม่ได้");
		 data.put("1", "1 ครั้ง");
		 data.put("n", "มากกว่า 1 ครั้ง");
		 return this.sortedData(data);
	}

	public final Map<String, String> userStatus() {
		 Map<String, String> data = new HashMap<String, String>();
		 data.put("Y", "ใช้งาน");
		 data.put("N", "ไม่ใช้งาน");
		 data.put("I", "เริ่มใช้ระบบ");
		 return this.sortedData(data);
	}
	
	public final Map<String, String> month() {
		 Map<String, String> data = new HashMap<String, String>();
		 data.put("01", "มกราคม");
		 data.put("02", "กุมภาพันธ์");
		 data.put("03", "มีนาคม");
		 data.put("04", "เมษายน");
		 data.put("05", "พฤษภาคม");
		 data.put("06", "มิถุนายน");
		 data.put("07", "กรกฎาคม");
		 data.put("08", "สิงหาคม");
		 data.put("09", "กันยายน");
		 data.put("10", "ตุลาคม");
		 data.put("11", "พฤศจิกายน");
		 data.put("12", "ธันวาคม");
		 return this.sortedData(data);
	}
	public final Map<String, String> iMonth() {
		 Map<String, String> data = new HashMap<String, String>();
		 data.put("1", "มกราคม");
		 data.put("2", "กุมภาพันธ์");
		 data.put("3", "มีนาคม");
		 data.put("4", "เมษายน");
		 data.put("5", "พฤษภาคม");
		 data.put("6", "มิถุนายน");
		 data.put("7", "กรกฎาคม");
		 data.put("8", "สิงหาคม");
		 data.put("9", "กันยายน");
		 data.put("10", "ตุลาคม");
		 data.put("11", "พฤศจิกายน");
		 data.put("12", "ธันวาคม");
		 return this.sortedData(data);
	}
	
	public final Map<String, String> workGroup() {
		 Map<String, String> data = new HashMap<String, String>();
		 data.put("1", "กลุ่มงานบริหารทั่วไป งานการเงิน");
		 data.put("2", "กลุ่มงานประกันสุขภาพ");
		 return this.sortedData(data);
	}
	
	public final int sysBudgetYear() {
		 return 2556;
	}
	
	private Map<String, String> sortedData(Map<String, String> data) {
		Map<String, String> sortedData = new TreeMap<String, String>(data);
		return sortedData;
	}
}